﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NMF.Languages
{
    public class EnumType : DataType
    {
        public EnumType() : base("Enum")
        {
            Literals = new List<string>();
        }

        public System.Type Enum { get; set; }
        public List<string> Literals { get; private set; }

        public override System.Type SystemType
        {
            get { return Enum; }
        }

        public override void Visit(ITypeVisitor visitor)
        {
            visitor.VisitEnum(this);
        }

        public override T Visit<T>(ITypeVisitor<T> visitor)
        {
            return visitor.VisitEnum(this);
        }

        public override T Visit<S, T>(ITypeVisitor<S, T> visitor, S parameter)
        {
            return visitor.VisitEnum(this, parameter);
        }

        public object ParseValue(string p)
        {
            throw new NotImplementedException();
        }

        public bool IgnoreCase { get; set; }
    }
}
